In [1]:
# Importing Libraries
import pandas as pd 
import altair as alt
In [2]:
# Reading Data
cases_data = '311_all_years_fin.csv'
stff = 'clean_sftt.csv'
rain = 'boston_weather_data.csv'
case_df = pd.read_csv(cases_data)
In [3]:
case_df
Out[3]:
case_enquiry_id open_dt ontime case_status closure_reason case_title subject reason type location neighborhood location_street_name location_zipcode latitude longitude
0 101004617607 2023-01-03 10:47:06 ONTIME Closed Case Closed. Closed date : 2023-01-03 10:47:35... Animal Lost Animal Control Animal Issues Animal Lost 1047 Commonwealth Ave Boston MA 02215 Boston 1047 Commonwealth Ave 2215.0 42.3594 -71.0587
1 101004653125 2023-02-02 11:54:26 ONTIME Open Pest Infestation - Residential Inspectional Services Housing Pest Infestation - Residential 179 Florence St Roslindale MA 02131 Roslindale 179 Florence St 2131.0 42.2872 -71.1217
2 101004657800 2023-02-06 10:18:00 ONTIME Open New Tree Requests Parks & Recreation Department Trees New Tree Requests 27 Bellamy St Brighton MA 02135 Allston / Brighton 27 Bellamy St 2135.0 42.3549 -71.1699
3 101004630015 2023-01-13 13:03:00 OVERDUE Open SCH1/24Unsatisfactory Living Conditions Inspectional Services Housing Unsatisfactory Living Conditions 15 Wildwood St Dorchester MA 02124 Greater Mattapan 15 Wildwood St 2124.0 42.2839 -71.0872
4 101004630010 2023-01-13 13:01:00 OVERDUE Open Electrical Inspectional Services Building Electrical 665 Tremont St Roxbury MA 02118 South End 665 Tremont St 2118.0 42.3420 -71.0759
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2582034 101000369425 2011-12-31 21:11:56 ONTIME Closed Case Closed Case Resolved GM2 making a sweep o... Highway Maintenance Public Works Department Highway Maintenance Highway Maintenance INTERSECTION of Boylston St & Massachusetts Av... Back Bay INTERSECTION Boylston St & Massachusetts Ave NaN 42.3473 -71.0877
2582035 101000369427 2011-12-31 21:40:22 ONTIME Closed Case Closed Case Resolved at that location sid... Sidewalk Repair (Make Safe) Public Works Department Highway Maintenance Sidewalk Repair (Make Safe) 90 Kilsyth Rd Brighton MA 02135 Allston / Brighton 90 Kilsyth Rd 2135.0 42.3402 -71.1456
2582036 101000369428 2011-12-31 22:25:24 ONTIME Closed Case Closed VIOCOR: Violation Corrected Heat - Excessive Insufficient Inspectional Services Housing Heat - Excessive Insufficient 16 Glenway St Dorchester MA 02121 Greater Mattapan 16 Glenway St 2121.0 42.3015 -71.0844
2582037 101000369429 2011-12-31 22:51:19 ONTIME Closed Case Closed ADCLSD: Administratively Closed Heat - Excessive Insufficient Inspectional Services Housing Heat - Excessive Insufficient 130 Talbot Ave Dorchester MA 02124 Greater Mattapan 130 Talbot Ave 2124.0 42.2931 -71.0813
2582038 101000369430 2011-12-31 23:11:06 OVERDUE Closed Case Closed Case Resolved completed Street Light Outages Public Works Department Street Lights Street Light Outages 20 Outlook Rd Mattapan MA 02126 Mattapan 20 Outlook Rd 2126.0 42.2823 -71.0950

2582039 rows × 15 columns

In [4]:
# Coordinate boundries for the grid around Mass Ave.
x_max = -71.075
x_min = -71.085
y_max = 42.34
y_min = 42.33
case_df = case_df[(case_df['latitude'] > y_min) & (case_df['latitude'] < y_max)]
case_df = case_df[(case_df['longitude'] > x_min) & (case_df['longitude'] < x_max)]
In [5]:
case_df
Out[5]:
case_enquiry_id open_dt ontime case_status closure_reason case_title subject reason type location neighborhood location_street_name location_zipcode latitude longitude
6 101004631390 2023-01-15 10:21:00 OVERDUE Open Street Light Outages Public Works Department Street Lights Street Light Outages 778 Tremont St Roxbury MA 02118 South End 778 Tremont St 2118.0 42.3393 -71.0799
40 101004616307 2023-01-02 07:41:13 ONTIME Closed Case Closed. Closed date : Mon Jan 02 12:45:11... CE Collection Public Works Department Street Cleaning CE Collection 100 W Concord St Roxbury MA 02118 South End 100 W Concord St 2118.0 42.3388 -71.0763
47 101004616375 2023-01-02 09:07:30 ONTIME Closed Case Closed. Closed date : Tue Jan 03 09:30:14... Requests for Street Cleaning Public Works Department Street Cleaning Requests for Street Cleaning 654 Massachusetts Ave Roxbury MA 02118 South End 654 Massachusetts Ave 2118.0 42.3363 -71.0763
53 101004616445 2023-01-02 09:59:26 ONTIME Closed Case Closed. Closed date : Tue Jan 03 06:52:22... Requests for Street Cleaning Public Works Department Street Cleaning Requests for Street Cleaning 1651 Washington St Roxbury MA 02118 South End 1651 Washington St 2118.0 42.3379 -71.0754
78 101004616179 2023-01-01 18:00:00 ONTIME Closed Case Closed. Closed date : Mon Jan 02 07:27:46... Needle Pickup Mayor's 24 Hour Hotline Needle Program Needle Pickup 694 Massachusetts Ave Roxbury MA 02118 South End 694 Massachusetts Ave 2118.0 42.3354 -71.0752
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2581823 101000369139 2011-12-30 11:48:07 ONTIME Closed Case Closed Case Resolved Both vehicles in spo... Parking Enforcement Transportation - Traffic Division Enforcement & Abandoned Vehicles Parking Enforcement 161 W Springfield St Roxbury MA 02118 South End 161 W Springfield St 2118.0 42.3393 -71.0789
2581932 101000369273 2011-12-30 15:41:35 ONTIME Closed Case Closed Case Resolved This area is a major... New Sign Crosswalk or Pavement Marking Transportation - Traffic Division Signs & Signals New Sign Crosswalk or Pavement Marking 255-257 Northampton St Roxbury MA 02118 Roxbury 255-257 Northampton St 2118.0 42.3394 -71.0814
2581936 101000369277 2011-12-30 15:53:44 OVERDUE Open Heat - Excessive Insufficient Inspectional Services Housing Heat - Excessive Insufficient 111 W Concord St Roxbury MA 02118 South End 111 W Concord St 2118.0 42.3393 -71.0763
2581992 101000369357 2011-12-31 10:15:30 ONTIME Closed Case Closed Case Resolved Crew investigated fo... Watermain Break Boston Water & Sewer Commission Water Issues Watermain Break INTERSECTION of Albany St & Melnea Cass Blvd ... Roxbury INTERSECTION Albany St & Melnea Cass Blvd NaN 42.3312 -71.0769
2582022 101000369407 2011-12-31 15:20:19 ONTIME Closed Case Closed Case Resolved Debris cleaned up by... Highway Maintenance Public Works Department Highway Maintenance Highway Maintenance 679 Massachusetts Ave Roxbury MA 02118 Roxbury 679 Massachusetts Ave 2118.0 42.3355 -71.0761

43536 rows × 15 columns

In [6]:
# Converting The current Date string into a DateTime object
case_df['DateTime'] =  pd.to_datetime(case_df['open_dt'], format='%Y-%m-%d %H:%M:%S')
In [7]:
# Rounding up the DateTime object to the closest date
case_df['DateTime'] = case_df['DateTime'].dt.floor('d')
In [8]:
case_df
Out[8]:
case_enquiry_id open_dt ontime case_status closure_reason case_title subject reason type location neighborhood location_street_name location_zipcode latitude longitude DateTime
6 101004631390 2023-01-15 10:21:00 OVERDUE Open Street Light Outages Public Works Department Street Lights Street Light Outages 778 Tremont St Roxbury MA 02118 South End 778 Tremont St 2118.0 42.3393 -71.0799 2023-01-15
40 101004616307 2023-01-02 07:41:13 ONTIME Closed Case Closed. Closed date : Mon Jan 02 12:45:11... CE Collection Public Works Department Street Cleaning CE Collection 100 W Concord St Roxbury MA 02118 South End 100 W Concord St 2118.0 42.3388 -71.0763 2023-01-02
47 101004616375 2023-01-02 09:07:30 ONTIME Closed Case Closed. Closed date : Tue Jan 03 09:30:14... Requests for Street Cleaning Public Works Department Street Cleaning Requests for Street Cleaning 654 Massachusetts Ave Roxbury MA 02118 South End 654 Massachusetts Ave 2118.0 42.3363 -71.0763 2023-01-02
53 101004616445 2023-01-02 09:59:26 ONTIME Closed Case Closed. Closed date : Tue Jan 03 06:52:22... Requests for Street Cleaning Public Works Department Street Cleaning Requests for Street Cleaning 1651 Washington St Roxbury MA 02118 South End 1651 Washington St 2118.0 42.3379 -71.0754 2023-01-02
78 101004616179 2023-01-01 18:00:00 ONTIME Closed Case Closed. Closed date : Mon Jan 02 07:27:46... Needle Pickup Mayor's 24 Hour Hotline Needle Program Needle Pickup 694 Massachusetts Ave Roxbury MA 02118 South End 694 Massachusetts Ave 2118.0 42.3354 -71.0752 2023-01-01
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2581823 101000369139 2011-12-30 11:48:07 ONTIME Closed Case Closed Case Resolved Both vehicles in spo... Parking Enforcement Transportation - Traffic Division Enforcement & Abandoned Vehicles Parking Enforcement 161 W Springfield St Roxbury MA 02118 South End 161 W Springfield St 2118.0 42.3393 -71.0789 2011-12-30
2581932 101000369273 2011-12-30 15:41:35 ONTIME Closed Case Closed Case Resolved This area is a major... New Sign Crosswalk or Pavement Marking Transportation - Traffic Division Signs & Signals New Sign Crosswalk or Pavement Marking 255-257 Northampton St Roxbury MA 02118 Roxbury 255-257 Northampton St 2118.0 42.3394 -71.0814 2011-12-30
2581936 101000369277 2011-12-30 15:53:44 OVERDUE Open Heat - Excessive Insufficient Inspectional Services Housing Heat - Excessive Insufficient 111 W Concord St Roxbury MA 02118 South End 111 W Concord St 2118.0 42.3393 -71.0763 2011-12-30
2581992 101000369357 2011-12-31 10:15:30 ONTIME Closed Case Closed Case Resolved Crew investigated fo... Watermain Break Boston Water & Sewer Commission Water Issues Watermain Break INTERSECTION of Albany St & Melnea Cass Blvd ... Roxbury INTERSECTION Albany St & Melnea Cass Blvd NaN 42.3312 -71.0769 2011-12-31
2582022 101000369407 2011-12-31 15:20:19 ONTIME Closed Case Closed Case Resolved Debris cleaned up by... Highway Maintenance Public Works Department Highway Maintenance Highway Maintenance 679 Massachusetts Ave Roxbury MA 02118 Roxbury 679 Massachusetts Ave 2118.0 42.3355 -71.0761 2011-12-31

43536 rows × 16 columns

In [9]:
# Filtering the cases to only keep the ones after 2012
case_df = case_df[case_df['DateTime'].dt.year >2012]
In [10]:
case_df
Out[10]:
case_enquiry_id open_dt ontime case_status closure_reason case_title subject reason type location neighborhood location_street_name location_zipcode latitude longitude DateTime
6 101004631390 2023-01-15 10:21:00 OVERDUE Open Street Light Outages Public Works Department Street Lights Street Light Outages 778 Tremont St Roxbury MA 02118 South End 778 Tremont St 2118.0 42.3393 -71.0799 2023-01-15
40 101004616307 2023-01-02 07:41:13 ONTIME Closed Case Closed. Closed date : Mon Jan 02 12:45:11... CE Collection Public Works Department Street Cleaning CE Collection 100 W Concord St Roxbury MA 02118 South End 100 W Concord St 2118.0 42.3388 -71.0763 2023-01-02
47 101004616375 2023-01-02 09:07:30 ONTIME Closed Case Closed. Closed date : Tue Jan 03 09:30:14... Requests for Street Cleaning Public Works Department Street Cleaning Requests for Street Cleaning 654 Massachusetts Ave Roxbury MA 02118 South End 654 Massachusetts Ave 2118.0 42.3363 -71.0763 2023-01-02
53 101004616445 2023-01-02 09:59:26 ONTIME Closed Case Closed. Closed date : Tue Jan 03 06:52:22... Requests for Street Cleaning Public Works Department Street Cleaning Requests for Street Cleaning 1651 Washington St Roxbury MA 02118 South End 1651 Washington St 2118.0 42.3379 -71.0754 2023-01-02
78 101004616179 2023-01-01 18:00:00 ONTIME Closed Case Closed. Closed date : Mon Jan 02 07:27:46... Needle Pickup Mayor's 24 Hour Hotline Needle Program Needle Pickup 694 Massachusetts Ave Roxbury MA 02118 South End 694 Massachusetts Ave 2118.0 42.3354 -71.0752 2023-01-01
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2405358 101000993486 2013-12-31 07:42:01 ONTIME Closed Case Closed Duplicate of Existing Case 871411 New Tree Requests Parks & Recreation Department Trees New Tree Requests 608 Massachusetts Ave Roxbury MA 02118 South End 608 Massachusetts Ave 2118.0 42.3373 -71.0776 2013-12-31
2405359 101000993487 2013-12-31 07:43:54 ONTIME Closed Case Closed Case Resolved no space for new tree New Tree Requests Parks & Recreation Department Trees New Tree Requests 616 Massachusetts Ave Roxbury MA 02118 South End 616 Massachusetts Ave 2118.0 42.3370 -71.0772 2013-12-31
2405498 101000993676 2013-12-31 09:52:55 ONTIME Closed Case Closed Case Resolved bike not there upon ... Abandoned Bicycle Mayor's 24 Hour Hotline Abandoned Bicycle Abandoned Bicycle 97 W Springfield St Roxbury MA 02118 South End 97 W Springfield St 2118.0 42.3380 -71.0773 2013-12-31
2405587 101000993830 2013-12-31 13:16:51 OVERDUE Open Graffiti Removal Property Management Graffiti Graffiti Removal INTERSECTION of Ruggles St & Shawmut Ave Roxb... Roxbury INTERSECTION Ruggles St & Shawmut Ave NaN 42.3320 -71.0840 2013-12-31
2405658 101000993967 2013-12-31 18:07:49 ONTIME Closed Case Closed Case Resolved Traffic Signal Repair Transportation - Traffic Division Signs & Signals Traffic Signal Repair INTERSECTION of Massachusetts Ave & Tremont St... Roxbury INTERSECTION Massachusetts Ave & Tremont St NaN 42.3393 -71.0804 2013-12-31

41263 rows × 16 columns

In [11]:
# Reading the rain data
rain_df = pd.read_csv(rain)
In [12]:
rain_df
Out[12]:
time tavg tmin tmax prcp wdir wspd pres
0 2013-03-01 3.2 1.1 5.0 0.0 342.0 15.1 1002.7
1 2013-03-02 3.1 1.1 5.6 0.0 307.0 14.4 1004.2
2 2013-03-03 2.6 0.6 6.1 0.0 NaN 14.4 1002.6
3 2013-03-04 1.8 -0.6 5.0 0.0 303.0 28.1 1003.0
4 2013-03-05 2.9 0.0 6.1 0.0 NaN 16.6 1013.5
... ... ... ... ... ... ... ... ...
3648 2023-02-25 -7.9 -10.6 -6.7 0.3 313.0 11.9 1029.5
3649 2023-02-26 -4.2 -7.8 3.9 0.0 268.0 11.9 1012.6
3650 2023-02-27 -1.7 -2.8 -0.6 0.0 46.0 18.7 1014.9
3651 2023-02-28 0.6 -1.7 2.2 7.1 86.0 23.8 1010.7
3652 2023-03-01 2.4 0.6 5.6 0.0 12.0 14.0 1019.1

3653 rows × 8 columns

In [13]:
# Formating the DateTime object similar to the cases file
rain_df['DateTime'] =  pd.to_datetime(rain_df['time'], format='%Y-%m-%d')
rain_df['DateTime'] = rain_df['DateTime'].dt.floor('d')
In [ ]:
 
In [14]:
# Further additions to point and click
def add_pres(row):
    date = row['DateTime']
    
    index = rain_df.loc[rain_df['DateTime'] == date].index
    
    if not index.empty:
        pres = rain_df.loc[index[0], 'pres']
        return pres
    else:
        print(date)
In [15]:
print(case_df['DateTime'].values[0])
2023-01-15T00:00:00.000000000
In [16]:
case_df['pres'] = case_df.apply(add_pres, axis=1)
2023-03-02 00:00:00
2023-03-02 00:00:00
2023-03-03 00:00:00
2023-03-02 00:00:00
2023-03-07 00:00:00
2023-03-05 00:00:00
2023-03-05 00:00:00
2023-03-07 00:00:00
2023-03-07 00:00:00
2023-03-08 00:00:00
2023-03-08 00:00:00
2023-03-08 00:00:00
2023-03-07 00:00:00
2023-03-08 00:00:00
2023-03-09 00:00:00
2023-03-09 00:00:00
2023-03-08 00:00:00
2023-03-09 00:00:00
2023-03-09 00:00:00
2023-03-12 00:00:00
2023-03-12 00:00:00
2023-03-13 00:00:00
2023-03-13 00:00:00
2023-03-10 00:00:00
2023-03-13 00:00:00
2023-03-13 00:00:00
2023-03-11 00:00:00
2023-03-11 00:00:00
2023-03-14 00:00:00
2023-03-11 00:00:00
2023-03-14 00:00:00
2023-03-14 00:00:00
2023-03-12 00:00:00
2023-03-12 00:00:00
2023-03-13 00:00:00
2023-03-13 00:00:00
2023-03-15 00:00:00
2023-03-13 00:00:00
2023-03-16 00:00:00
2023-03-15 00:00:00
2023-03-16 00:00:00
2023-03-17 00:00:00
2023-03-18 00:00:00
2023-03-18 00:00:00
2023-03-19 00:00:00
2023-03-19 00:00:00
2023-03-19 00:00:00
2023-03-20 00:00:00
2023-03-20 00:00:00
2023-03-20 00:00:00
2023-03-20 00:00:00
2023-03-22 00:00:00
2023-03-22 00:00:00
2023-03-22 00:00:00
2023-03-22 00:00:00
2023-03-22 00:00:00
2023-03-23 00:00:00
2023-03-22 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-24 00:00:00
2023-03-27 00:00:00
2023-03-27 00:00:00
2023-03-25 00:00:00
2023-03-27 00:00:00
2023-03-25 00:00:00
2023-03-25 00:00:00
2023-03-25 00:00:00
2023-03-27 00:00:00
2023-03-26 00:00:00
2023-03-28 00:00:00
2023-03-28 00:00:00
2023-03-27 00:00:00
2023-03-27 00:00:00
2023-03-28 00:00:00
2023-03-30 00:00:00
2023-03-30 00:00:00
2023-03-31 00:00:00
2023-03-29 00:00:00
2023-04-03 00:00:00
2023-04-01 00:00:00
2023-04-04 00:00:00
2023-04-01 00:00:00
2023-04-02 00:00:00
2023-04-04 00:00:00
2023-04-04 00:00:00
2023-04-03 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-06 00:00:00
2023-04-04 00:00:00
2023-04-06 00:00:00
2023-04-07 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-08 00:00:00
2023-04-06 00:00:00
2023-04-06 00:00:00
2023-04-10 00:00:00
2023-04-10 00:00:00
2023-04-07 00:00:00
2023-04-11 00:00:00
2023-04-07 00:00:00
2023-04-12 00:00:00
2023-04-12 00:00:00
2023-04-10 00:00:00
2023-04-10 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-11 00:00:00
2023-04-14 00:00:00
2023-04-12 00:00:00
2023-04-12 00:00:00
2023-04-15 00:00:00
2023-04-12 00:00:00
2023-04-13 00:00:00
2023-04-15 00:00:00
2023-04-16 00:00:00
2023-04-17 00:00:00
2023-04-17 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-14 00:00:00
2023-04-18 00:00:00
2023-04-19 00:00:00
2023-04-20 00:00:00
2023-04-20 00:00:00
2023-04-17 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-21 00:00:00
2023-04-21 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-22 00:00:00
2023-04-06 00:00:00
2023-04-11 00:00:00
2023-04-09 00:00:00
2023-04-11 00:00:00
2023-04-12 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-19 00:00:00
2023-04-19 00:00:00
2023-04-19 00:00:00
2023-04-24 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-04-20 00:00:00
2023-04-20 00:00:00
2023-04-20 00:00:00
2023-04-20 00:00:00
2023-04-20 00:00:00
2023-04-21 00:00:00
2023-04-27 00:00:00
2023-04-24 00:00:00
2023-04-22 00:00:00
2023-04-22 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-29 00:00:00
2023-04-30 00:00:00
2023-04-30 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-04-23 00:00:00
2023-04-23 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-05-01 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-03 00:00:00
2023-04-24 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-05-07 00:00:00
2023-04-27 00:00:00
2023-05-07 00:00:00
2023-05-04 00:00:00
2023-05-04 00:00:00
2023-04-29 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-08 00:00:00
2023-05-08 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-04 00:00:00
2023-05-04 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-10 00:00:00
2023-05-04 00:00:00
2023-05-10 00:00:00
2023-05-10 00:00:00
2023-05-10 00:00:00
2023-05-04 00:00:00
2023-05-04 00:00:00
2023-05-05 00:00:00
2023-05-11 00:00:00
2023-05-07 00:00:00
2023-05-11 00:00:00
2023-05-08 00:00:00
2023-05-12 00:00:00
2023-05-08 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-13 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-10 00:00:00
2023-05-10 00:00:00
2023-05-10 00:00:00
2023-05-16 00:00:00
2023-05-16 00:00:00
2023-05-12 00:00:00
2023-05-12 00:00:00
2023-05-17 00:00:00
2023-05-18 00:00:00
2023-05-13 00:00:00
2023-05-13 00:00:00
2023-05-14 00:00:00
2023-05-14 00:00:00
2023-05-19 00:00:00
2023-05-15 00:00:00
2023-05-20 00:00:00
2023-04-28 00:00:00
2023-04-28 00:00:00
2023-04-28 00:00:00
2023-04-28 00:00:00
2023-05-16 00:00:00
2023-05-16 00:00:00
2023-05-22 00:00:00
2023-05-16 00:00:00
2023-05-16 00:00:00
2023-05-17 00:00:00
2023-05-17 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-24 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-24 00:00:00
2023-05-24 00:00:00
2023-05-20 00:00:00
2023-05-20 00:00:00
2023-05-21 00:00:00
2023-05-21 00:00:00
2023-05-21 00:00:00
2023-05-22 00:00:00
2023-05-22 00:00:00
2023-05-22 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-24 00:00:00
2023-03-02 00:00:00
2023-03-03 00:00:00
2023-03-03 00:00:00
2023-03-05 00:00:00
2023-03-06 00:00:00
2023-03-06 00:00:00
2023-03-07 00:00:00
2023-03-08 00:00:00
2023-03-08 00:00:00
2023-03-10 00:00:00
2023-03-11 00:00:00
2023-03-12 00:00:00
2023-03-12 00:00:00
2023-03-13 00:00:00
2023-03-13 00:00:00
2023-03-14 00:00:00
2023-03-14 00:00:00
2023-03-15 00:00:00
2023-03-15 00:00:00
2023-03-16 00:00:00
2023-03-16 00:00:00
2023-03-16 00:00:00
2023-03-17 00:00:00
2023-03-17 00:00:00
2023-03-18 00:00:00
2023-03-19 00:00:00
2023-03-19 00:00:00
2023-03-20 00:00:00
2023-03-20 00:00:00
2023-03-20 00:00:00
2023-03-21 00:00:00
2023-03-21 00:00:00
2023-03-22 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-26 00:00:00
2023-03-26 00:00:00
2023-03-29 00:00:00
2023-03-29 00:00:00
2023-03-30 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-04 00:00:00
2023-04-04 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-06 00:00:00
2023-04-07 00:00:00
2023-04-07 00:00:00
2023-04-08 00:00:00
2023-04-09 00:00:00
2023-04-10 00:00:00
2023-04-10 00:00:00
2023-04-10 00:00:00
2023-04-12 00:00:00
2023-04-12 00:00:00
2023-04-13 00:00:00
2023-04-14 00:00:00
2023-04-15 00:00:00
2023-04-15 00:00:00
2023-04-16 00:00:00
2023-04-16 00:00:00
2023-04-16 00:00:00
2023-04-17 00:00:00
2023-04-17 00:00:00
2023-04-17 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-19 00:00:00
2023-04-19 00:00:00
2023-04-19 00:00:00
2023-04-19 00:00:00
2023-04-20 00:00:00
2023-04-21 00:00:00
2023-04-22 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-25 00:00:00
2023-04-28 00:00:00
2023-04-26 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-28 00:00:00
2023-04-29 00:00:00
2023-04-29 00:00:00
2023-04-29 00:00:00
2023-04-30 00:00:00
2023-04-30 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-05-04 00:00:00
2023-05-04 00:00:00
2023-05-04 00:00:00
2023-05-04 00:00:00
2023-05-04 00:00:00
2023-05-05 00:00:00
2023-05-05 00:00:00
2023-05-05 00:00:00
2023-05-06 00:00:00
2023-05-06 00:00:00
2023-05-07 00:00:00
2023-05-07 00:00:00
2023-05-21 00:00:00
2023-05-16 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-10 00:00:00
2023-05-10 00:00:00
2023-05-12 00:00:00
2023-05-13 00:00:00
2023-05-13 00:00:00
2023-05-14 00:00:00
2023-05-14 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-16 00:00:00
2023-05-16 00:00:00
2023-05-16 00:00:00
2023-05-17 00:00:00
2023-05-17 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-16 00:00:00
2023-05-17 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-19 00:00:00
2023-05-19 00:00:00
2023-05-18 00:00:00
2023-05-19 00:00:00
2023-05-19 00:00:00
2023-05-21 00:00:00
2023-05-22 00:00:00
2023-05-22 00:00:00
2023-05-22 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-24 00:00:00
2023-05-24 00:00:00
2023-05-24 00:00:00
2023-05-21 00:00:00
2023-05-21 00:00:00
2023-03-02 00:00:00
2023-03-03 00:00:00
2023-03-03 00:00:00
2023-03-06 00:00:00
2023-03-06 00:00:00
2023-03-07 00:00:00
2023-03-07 00:00:00
2023-03-08 00:00:00
2023-03-09 00:00:00
2023-03-09 00:00:00
2023-03-10 00:00:00
2023-03-12 00:00:00
2023-03-12 00:00:00
2023-03-13 00:00:00
2023-03-13 00:00:00
2023-03-14 00:00:00
2023-03-15 00:00:00
2023-03-15 00:00:00
2023-03-16 00:00:00
2023-03-16 00:00:00
2023-03-19 00:00:00
2023-03-20 00:00:00
2023-03-22 00:00:00
2023-03-22 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-24 00:00:00
2023-03-24 00:00:00
2023-03-24 00:00:00
2023-03-27 00:00:00
2023-03-27 00:00:00
2023-03-28 00:00:00
2023-03-28 00:00:00
2023-03-28 00:00:00
2023-03-28 00:00:00
2023-03-28 00:00:00
2023-03-29 00:00:00
2023-03-30 00:00:00
2023-03-31 00:00:00
2023-04-01 00:00:00
2023-04-02 00:00:00
2023-04-02 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-04 00:00:00
2023-04-04 00:00:00
2023-04-04 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-10 00:00:00
2023-04-06 00:00:00
2023-04-06 00:00:00
2023-04-07 00:00:00
2023-04-08 00:00:00
2023-04-09 00:00:00
2023-04-10 00:00:00
2023-04-10 00:00:00
2023-04-10 00:00:00
2023-04-10 00:00:00
2023-04-11 00:00:00
2023-04-11 00:00:00
2023-04-11 00:00:00
2023-04-24 00:00:00
2023-04-13 00:00:00
2023-04-13 00:00:00
2023-04-13 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-15 00:00:00
2023-04-15 00:00:00
2023-04-18 00:00:00
2023-04-19 00:00:00
2023-04-19 00:00:00
2023-04-19 00:00:00
2023-04-20 00:00:00
2023-04-22 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-28 00:00:00
2023-05-04 00:00:00
2023-04-29 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-05-04 00:00:00
2023-05-05 00:00:00
2023-05-06 00:00:00
2023-05-07 00:00:00
2023-05-07 00:00:00
2023-05-08 00:00:00
2023-05-08 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-10 00:00:00
2023-05-10 00:00:00
2023-05-10 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-12 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-13 00:00:00
2023-05-16 00:00:00
2023-05-16 00:00:00
2023-05-16 00:00:00
2023-05-16 00:00:00
2023-05-17 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-19 00:00:00
2023-05-19 00:00:00
2023-05-19 00:00:00
2023-05-20 00:00:00
2023-05-21 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-24 00:00:00
2023-05-22 00:00:00
2023-03-02 00:00:00
2023-03-04 00:00:00
2023-03-07 00:00:00
2023-03-08 00:00:00
2023-03-08 00:00:00
2023-03-09 00:00:00
2023-03-09 00:00:00
2023-03-09 00:00:00
2023-03-10 00:00:00
2023-03-11 00:00:00
2023-03-12 00:00:00
2023-03-12 00:00:00
2023-03-13 00:00:00
2023-03-13 00:00:00
2023-03-14 00:00:00
2023-03-15 00:00:00
2023-03-02 00:00:00
2023-03-02 00:00:00
2023-03-02 00:00:00
2023-03-15 00:00:00
2023-03-02 00:00:00
2023-03-03 00:00:00
2023-03-03 00:00:00
2023-03-04 00:00:00
2023-03-04 00:00:00
2023-03-16 00:00:00
2023-03-05 00:00:00
2023-03-06 00:00:00
2023-03-06 00:00:00
2023-03-17 00:00:00
2023-03-06 00:00:00
2023-03-06 00:00:00
2023-03-07 00:00:00
2023-03-18 00:00:00
2023-03-08 00:00:00
2023-03-19 00:00:00
2023-03-20 00:00:00
2023-03-20 00:00:00
2023-03-20 00:00:00
2023-03-08 00:00:00
2023-03-09 00:00:00
2023-03-10 00:00:00
2023-03-21 00:00:00
2023-03-12 00:00:00
2023-03-12 00:00:00
2023-03-22 00:00:00
2023-03-13 00:00:00
2023-03-14 00:00:00
2023-03-22 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-14 00:00:00
2023-03-14 00:00:00
2023-03-23 00:00:00
2023-03-15 00:00:00
2023-05-14 00:00:00
2023-03-25 00:00:00
2023-03-15 00:00:00
2023-03-15 00:00:00
2023-03-25 00:00:00
2023-03-25 00:00:00
2023-03-26 00:00:00
2023-03-26 00:00:00
2023-03-26 00:00:00
2023-03-26 00:00:00
2023-03-27 00:00:00
2023-03-17 00:00:00
2023-03-18 00:00:00
2023-03-18 00:00:00
2023-03-28 00:00:00
2023-03-29 00:00:00
2023-03-19 00:00:00
2023-03-19 00:00:00
2023-03-29 00:00:00
2023-03-20 00:00:00
2023-03-29 00:00:00
2023-03-20 00:00:00
2023-03-20 00:00:00
2023-04-01 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-03-22 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-04-04 00:00:00
2023-03-25 00:00:00
2023-03-25 00:00:00
2023-04-04 00:00:00
2023-03-25 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-06 00:00:00
2023-04-06 00:00:00
2023-04-06 00:00:00
2023-03-27 00:00:00
2023-04-07 00:00:00
2023-03-27 00:00:00
2023-03-28 00:00:00
2023-03-28 00:00:00
2023-04-07 00:00:00
2023-04-07 00:00:00
2023-04-08 00:00:00
2023-04-09 00:00:00
2023-04-09 00:00:00
2023-03-29 00:00:00
2023-04-10 00:00:00
2023-04-10 00:00:00
2023-03-29 00:00:00
2023-04-10 00:00:00
2023-04-11 00:00:00
2023-04-11 00:00:00
2023-03-30 00:00:00
2023-03-31 00:00:00
2023-04-11 00:00:00
2023-04-11 00:00:00
2023-04-01 00:00:00
2023-04-02 00:00:00
2023-04-13 00:00:00
2023-04-03 00:00:00
2023-04-13 00:00:00
2023-04-03 00:00:00
2023-04-13 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-04 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-04 00:00:00
2023-04-04 00:00:00
2023-04-16 00:00:00
2023-04-16 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-16 00:00:00
2023-04-05 00:00:00
2023-04-17 00:00:00
2023-04-17 00:00:00
2023-04-18 00:00:00
2023-04-06 00:00:00
2023-04-06 00:00:00
2023-05-05 00:00:00
2023-04-07 00:00:00
2023-04-08 00:00:00
2023-04-09 00:00:00
2023-04-09 00:00:00
2023-04-10 00:00:00
2023-04-10 00:00:00
2023-04-21 00:00:00
2023-04-21 00:00:00
2023-04-23 00:00:00
2023-04-24 00:00:00
2023-04-12 00:00:00
2023-04-12 00:00:00
2023-04-12 00:00:00
2023-04-12 00:00:00
2023-04-24 00:00:00
2023-04-13 00:00:00
2023-04-13 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-25 00:00:00
2023-05-12 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-05-20 00:00:00
2023-04-14 00:00:00
2023-04-27 00:00:00
2023-04-15 00:00:00
2023-04-17 00:00:00
2023-04-17 00:00:00
2023-04-29 00:00:00
2023-04-29 00:00:00
2023-04-18 00:00:00
2023-04-30 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-30 00:00:00
2023-04-30 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-04-19 00:00:00
2023-05-01 00:00:00
2023-05-02 00:00:00
2023-04-20 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-04-20 00:00:00
2023-05-03 00:00:00
2023-04-20 00:00:00
2023-05-04 00:00:00
2023-05-04 00:00:00
2023-04-21 00:00:00
2023-04-22 00:00:00
2023-04-22 00:00:00
2023-04-23 00:00:00
2023-05-05 00:00:00
2023-04-24 00:00:00
2023-05-06 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-05-08 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-04-27 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-04-27 00:00:00
2023-05-10 00:00:00
2023-05-10 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-04-29 00:00:00
2023-04-29 00:00:00
2023-05-07 00:00:00
2023-05-12 00:00:00
2023-05-12 00:00:00
2023-05-12 00:00:00
2023-05-12 00:00:00
2023-05-01 00:00:00
2023-05-12 00:00:00
2023-05-01 00:00:00
2023-05-03 00:00:00
2023-05-14 00:00:00
2023-05-14 00:00:00
2023-05-14 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-04 00:00:00
2023-03-15 00:00:00
2023-03-02 00:00:00
2023-05-04 00:00:00
2023-05-05 00:00:00
2023-05-05 00:00:00
2023-05-05 00:00:00
2023-05-05 00:00:00
2023-05-05 00:00:00
2023-05-16 00:00:00
2023-05-05 00:00:00
2023-05-06 00:00:00
2023-05-07 00:00:00
2023-05-07 00:00:00
2023-05-07 00:00:00
2023-05-08 00:00:00
2023-05-17 00:00:00
2023-05-08 00:00:00
2023-05-09 00:00:00
2023-05-18 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-10 00:00:00
2023-05-18 00:00:00
2023-05-11 00:00:00
2023-05-18 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-19 00:00:00
2023-05-12 00:00:00
2023-05-14 00:00:00
2023-05-20 00:00:00
2023-05-15 00:00:00
2023-05-21 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-22 00:00:00
2023-05-16 00:00:00
2023-05-17 00:00:00
2023-05-22 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-17 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-24 00:00:00
2023-05-20 00:00:00
2023-05-20 00:00:00
2023-05-21 00:00:00
2023-05-21 00:00:00
2023-05-21 00:00:00
2023-05-21 00:00:00
2023-05-22 00:00:00
2023-05-22 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-24 00:00:00
2023-05-24 00:00:00
2023-05-15 00:00:00
2023-05-04 00:00:00
2023-04-11 00:00:00
2023-03-02 00:00:00
2023-03-04 00:00:00
2023-03-05 00:00:00
2023-03-06 00:00:00
2023-03-06 00:00:00
2023-03-06 00:00:00
2023-03-07 00:00:00
2023-03-07 00:00:00
2023-03-07 00:00:00
2023-03-07 00:00:00
2023-03-07 00:00:00
2023-03-08 00:00:00
2023-03-09 00:00:00
2023-03-10 00:00:00
2023-03-11 00:00:00
2023-03-12 00:00:00
2023-03-12 00:00:00
2023-03-13 00:00:00
2023-03-13 00:00:00
2023-03-15 00:00:00
2023-03-16 00:00:00
2023-03-18 00:00:00
2023-03-19 00:00:00
2023-03-19 00:00:00
2023-03-19 00:00:00
2023-03-20 00:00:00
2023-03-20 00:00:00
2023-03-21 00:00:00
2023-03-22 00:00:00
2023-03-22 00:00:00
2023-03-22 00:00:00
2023-03-22 00:00:00
2023-03-22 00:00:00
2023-03-22 00:00:00
2023-03-23 00:00:00
2023-03-25 00:00:00
2023-03-26 00:00:00
2023-03-27 00:00:00
2023-03-28 00:00:00
2023-03-29 00:00:00
2023-03-31 00:00:00
2023-04-01 00:00:00
2023-04-01 00:00:00
2023-04-01 00:00:00
2023-04-02 00:00:00
2023-04-03 00:00:00
2023-04-04 00:00:00
2023-04-04 00:00:00
2023-04-04 00:00:00
2023-04-05 00:00:00
2023-04-06 00:00:00
2023-04-07 00:00:00
2023-04-07 00:00:00
2023-04-07 00:00:00
2023-04-08 00:00:00
2023-04-09 00:00:00
2023-04-10 00:00:00
2023-04-10 00:00:00
2023-04-13 00:00:00
2023-04-13 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-16 00:00:00
2023-04-16 00:00:00
2023-04-16 00:00:00
2023-04-17 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-19 00:00:00
2023-04-19 00:00:00
2023-04-20 00:00:00
2023-04-20 00:00:00
2023-04-20 00:00:00
2023-04-21 00:00:00
2023-04-21 00:00:00
2023-04-21 00:00:00
2023-04-22 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-28 00:00:00
2023-04-29 00:00:00
2023-04-29 00:00:00
2023-04-30 00:00:00
2023-04-30 00:00:00
2023-04-30 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-05-04 00:00:00
2023-05-05 00:00:00
2023-05-05 00:00:00
2023-05-05 00:00:00
2023-05-06 00:00:00
2023-05-07 00:00:00
2023-05-07 00:00:00
2023-05-07 00:00:00
2023-05-08 00:00:00
2023-05-08 00:00:00
2023-05-08 00:00:00
2023-05-08 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-10 00:00:00
2023-05-12 00:00:00
2023-05-12 00:00:00
2023-05-13 00:00:00
2023-05-13 00:00:00
2023-05-14 00:00:00
2023-05-14 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-16 00:00:00
2023-05-17 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-20 00:00:00
2023-05-20 00:00:00
2023-05-20 00:00:00
2023-05-21 00:00:00
2023-05-22 00:00:00
2023-05-22 00:00:00
2023-05-22 00:00:00
2023-05-22 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-24 00:00:00
2023-05-24 00:00:00
2023-03-02 00:00:00
2023-03-05 00:00:00
2023-03-06 00:00:00
2023-03-06 00:00:00
2023-03-06 00:00:00
2023-03-07 00:00:00
2023-03-07 00:00:00
2023-03-08 00:00:00
2023-03-08 00:00:00
2023-03-09 00:00:00
2023-03-09 00:00:00
2023-03-10 00:00:00
2023-03-10 00:00:00
2023-03-11 00:00:00
2023-03-13 00:00:00
2023-03-13 00:00:00
2023-03-13 00:00:00
2023-03-13 00:00:00
2023-03-14 00:00:00
2023-03-14 00:00:00
2023-03-14 00:00:00
2023-03-15 00:00:00
2023-03-15 00:00:00
2023-03-15 00:00:00
2023-03-16 00:00:00
2023-03-16 00:00:00
2023-03-16 00:00:00
2023-03-17 00:00:00
2023-03-18 00:00:00
2023-03-18 00:00:00
2023-03-18 00:00:00
2023-03-19 00:00:00
2023-03-19 00:00:00
2023-03-19 00:00:00
2023-03-20 00:00:00
2023-03-20 00:00:00
2023-03-22 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-23 00:00:00
2023-03-24 00:00:00
2023-03-24 00:00:00
2023-03-25 00:00:00
2023-03-27 00:00:00
2023-03-27 00:00:00
2023-03-27 00:00:00
2023-03-28 00:00:00
2023-03-28 00:00:00
2023-03-29 00:00:00
2023-03-29 00:00:00
2023-03-29 00:00:00
2023-03-29 00:00:00
2023-03-29 00:00:00
2023-03-30 00:00:00
2023-03-31 00:00:00
2023-04-02 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-03 00:00:00
2023-04-04 00:00:00
2023-04-05 00:00:00
2023-04-05 00:00:00
2023-04-07 00:00:00
2023-04-07 00:00:00
2023-04-08 00:00:00
2023-04-08 00:00:00
2023-04-09 00:00:00
2023-04-10 00:00:00
2023-04-12 00:00:00
2023-04-12 00:00:00
2023-04-13 00:00:00
2023-04-13 00:00:00
2023-04-13 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-14 00:00:00
2023-04-15 00:00:00
2023-04-15 00:00:00
2023-04-17 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-18 00:00:00
2023-04-19 00:00:00
2023-04-20 00:00:00
2023-04-20 00:00:00
2023-04-21 00:00:00
2023-04-22 00:00:00
2023-04-22 00:00:00
2023-04-23 00:00:00
2023-04-24 00:00:00
2023-04-24 00:00:00
2023-04-27 00:00:00
2023-04-24 00:00:00
2023-04-25 00:00:00
2023-04-25 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-04-26 00:00:00
2023-04-27 00:00:00
2023-04-27 00:00:00
2023-04-28 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-01 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-02 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-05-03 00:00:00
2023-05-04 00:00:00
2023-05-04 00:00:00
2023-05-04 00:00:00
2023-05-05 00:00:00
2023-05-05 00:00:00
2023-05-05 00:00:00
2023-05-07 00:00:00
2023-05-07 00:00:00
2023-05-07 00:00:00
2023-05-07 00:00:00
2023-05-08 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-09 00:00:00
2023-05-10 00:00:00
2023-05-10 00:00:00
2023-05-10 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-11 00:00:00
2023-05-12 00:00:00
2023-05-14 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-15 00:00:00
2023-05-16 00:00:00
2023-05-16 00:00:00
2023-05-17 00:00:00
2023-05-17 00:00:00
2023-05-17 00:00:00
2023-05-18 00:00:00
2023-05-18 00:00:00
2023-05-21 00:00:00
2023-05-21 00:00:00
2023-05-22 00:00:00
2023-05-22 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-23 00:00:00
2023-05-24 00:00:00
2023-05-24 00:00:00
2013-01-01 00:00:00
2013-01-01 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-02 00:00:00
2013-01-03 00:00:00
2013-01-03 00:00:00
2013-01-03 00:00:00
2013-01-04 00:00:00
2013-01-04 00:00:00
2013-01-04 00:00:00
2013-01-05 00:00:00
2013-01-05 00:00:00
2013-01-05 00:00:00
2013-01-07 00:00:00
2013-01-07 00:00:00
2013-01-07 00:00:00
2013-01-07 00:00:00
2013-01-07 00:00:00
2013-01-08 00:00:00
2013-01-08 00:00:00
2013-01-08 00:00:00
2013-01-08 00:00:00
2013-01-08 00:00:00
2013-01-09 00:00:00
2013-01-09 00:00:00
2013-01-09 00:00:00
2013-01-09 00:00:00
2013-01-09 00:00:00
2013-01-09 00:00:00
2013-01-09 00:00:00
2013-01-09 00:00:00
2013-01-09 00:00:00
2013-01-10 00:00:00
2013-01-10 00:00:00
2013-01-10 00:00:00
2013-01-11 00:00:00
2013-01-11 00:00:00
2013-01-11 00:00:00
2013-01-11 00:00:00
2013-01-14 00:00:00
2013-01-15 00:00:00
2013-01-15 00:00:00
2013-01-15 00:00:00
2013-01-15 00:00:00
2013-01-15 00:00:00
2013-01-15 00:00:00
2013-01-15 00:00:00
2013-01-16 00:00:00
2013-01-16 00:00:00
2013-01-16 00:00:00
2013-01-16 00:00:00
2013-01-16 00:00:00
2013-01-17 00:00:00
2013-01-18 00:00:00
2013-01-19 00:00:00
2013-01-19 00:00:00
2013-01-20 00:00:00
2013-01-22 00:00:00
2013-01-22 00:00:00
2013-01-22 00:00:00
2013-01-23 00:00:00
2013-01-23 00:00:00
2013-01-23 00:00:00
2013-01-23 00:00:00
2013-01-23 00:00:00
2013-01-24 00:00:00
2013-01-24 00:00:00
2013-01-24 00:00:00
2013-01-24 00:00:00
2013-01-24 00:00:00
2013-01-24 00:00:00
2013-01-24 00:00:00
2013-01-24 00:00:00
2013-01-25 00:00:00
2013-01-25 00:00:00
2013-01-25 00:00:00
2013-01-25 00:00:00
2013-01-25 00:00:00
2013-01-25 00:00:00
2013-01-25 00:00:00
2013-01-25 00:00:00
2013-01-25 00:00:00
2013-01-26 00:00:00
2013-01-27 00:00:00
2013-01-28 00:00:00
2013-01-28 00:00:00
2013-01-28 00:00:00
2013-01-28 00:00:00
2013-01-28 00:00:00
2013-01-28 00:00:00
2013-01-28 00:00:00
2013-01-28 00:00:00
2013-01-29 00:00:00
2013-01-29 00:00:00
2013-01-29 00:00:00
2013-01-29 00:00:00
2013-01-29 00:00:00
2013-01-30 00:00:00
2013-01-31 00:00:00
2013-01-31 00:00:00
2013-01-31 00:00:00
2013-01-31 00:00:00
2013-01-31 00:00:00
2013-02-01 00:00:00
2013-02-01 00:00:00
2013-02-02 00:00:00
2013-02-04 00:00:00
2013-02-04 00:00:00
2013-02-04 00:00:00
2013-02-04 00:00:00
2013-02-04 00:00:00
2013-02-04 00:00:00
2013-02-04 00:00:00
2013-02-05 00:00:00
2013-02-05 00:00:00
2013-02-05 00:00:00
2013-02-06 00:00:00
2013-02-06 00:00:00
2013-02-06 00:00:00
2013-02-07 00:00:00
2013-02-08 00:00:00
2013-02-08 00:00:00
2013-02-08 00:00:00
2013-02-08 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-09 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-10 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-11 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-12 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-13 00:00:00
2013-02-14 00:00:00
2013-02-14 00:00:00
2013-02-14 00:00:00
2013-02-14 00:00:00
2013-02-14 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-15 00:00:00
2013-02-16 00:00:00
2013-02-16 00:00:00
2013-02-16 00:00:00
2013-02-16 00:00:00
2013-02-18 00:00:00
2013-02-18 00:00:00
2013-02-18 00:00:00
2013-02-18 00:00:00
2013-02-19 00:00:00
2013-02-19 00:00:00
2013-02-19 00:00:00
2013-02-20 00:00:00
2013-02-20 00:00:00
2013-02-20 00:00:00
2013-02-20 00:00:00
2013-02-21 00:00:00
2013-02-21 00:00:00
2013-02-21 00:00:00
2013-02-21 00:00:00
2013-02-21 00:00:00
2013-02-22 00:00:00
2013-02-22 00:00:00
2013-02-22 00:00:00
2013-02-22 00:00:00
2013-02-22 00:00:00
2013-02-22 00:00:00
2013-02-22 00:00:00
2013-02-23 00:00:00
2013-02-23 00:00:00
2013-02-25 00:00:00
2013-02-25 00:00:00
2013-02-26 00:00:00
2013-02-26 00:00:00
2013-02-26 00:00:00
2013-02-27 00:00:00
2013-02-27 00:00:00
2013-02-27 00:00:00
2013-02-27 00:00:00
2013-02-27 00:00:00
2013-02-27 00:00:00
2013-02-28 00:00:00
2013-02-28 00:00:00
/var/folders/pr/rx1rrffd36q4ys1d_2dbyssr0000gn/T/ipykernel_8017/1829447209.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  case_df['pres'] = case_df.apply(add_pres, axis=1)
In [17]:
case_df
Out[17]:
case_enquiry_id open_dt ontime case_status closure_reason case_title subject reason type location neighborhood location_street_name location_zipcode latitude longitude DateTime pres
6 101004631390 2023-01-15 10:21:00 OVERDUE Open Street Light Outages Public Works Department Street Lights Street Light Outages 778 Tremont St Roxbury MA 02118 South End 778 Tremont St 2118.0 42.3393 -71.0799 2023-01-15 1014.7
40 101004616307 2023-01-02 07:41:13 ONTIME Closed Case Closed. Closed date : Mon Jan 02 12:45:11... CE Collection Public Works Department Street Cleaning CE Collection 100 W Concord St Roxbury MA 02118 South End 100 W Concord St 2118.0 42.3388 -71.0763 2023-01-02 1018.5
47 101004616375 2023-01-02 09:07:30 ONTIME Closed Case Closed. Closed date : Tue Jan 03 09:30:14... Requests for Street Cleaning Public Works Department Street Cleaning Requests for Street Cleaning 654 Massachusetts Ave Roxbury MA 02118 South End 654 Massachusetts Ave 2118.0 42.3363 -71.0763 2023-01-02 1018.5
53 101004616445 2023-01-02 09:59:26 ONTIME Closed Case Closed. Closed date : Tue Jan 03 06:52:22... Requests for Street Cleaning Public Works Department Street Cleaning Requests for Street Cleaning 1651 Washington St Roxbury MA 02118 South End 1651 Washington St 2118.0 42.3379 -71.0754 2023-01-02 1018.5
78 101004616179 2023-01-01 18:00:00 ONTIME Closed Case Closed. Closed date : Mon Jan 02 07:27:46... Needle Pickup Mayor's 24 Hour Hotline Needle Program Needle Pickup 694 Massachusetts Ave Roxbury MA 02118 South End 694 Massachusetts Ave 2118.0 42.3354 -71.0752 2023-01-01 1008.7
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2405358 101000993486 2013-12-31 07:42:01 ONTIME Closed Case Closed Duplicate of Existing Case 871411 New Tree Requests Parks & Recreation Department Trees New Tree Requests 608 Massachusetts Ave Roxbury MA 02118 South End 608 Massachusetts Ave 2118.0 42.3373 -71.0776 2013-12-31 1020.0
2405359 101000993487 2013-12-31 07:43:54 ONTIME Closed Case Closed Case Resolved no space for new tree New Tree Requests Parks & Recreation Department Trees New Tree Requests 616 Massachusetts Ave Roxbury MA 02118 South End 616 Massachusetts Ave 2118.0 42.3370 -71.0772 2013-12-31 1020.0
2405498 101000993676 2013-12-31 09:52:55 ONTIME Closed Case Closed Case Resolved bike not there upon ... Abandoned Bicycle Mayor's 24 Hour Hotline Abandoned Bicycle Abandoned Bicycle 97 W Springfield St Roxbury MA 02118 South End 97 W Springfield St 2118.0 42.3380 -71.0773 2013-12-31 1020.0
2405587 101000993830 2013-12-31 13:16:51 OVERDUE Open Graffiti Removal Property Management Graffiti Graffiti Removal INTERSECTION of Ruggles St & Shawmut Ave Roxb... Roxbury INTERSECTION Ruggles St & Shawmut Ave NaN 42.3320 -71.0840 2013-12-31 1020.0
2405658 101000993967 2013-12-31 18:07:49 ONTIME Closed Case Closed Case Resolved Traffic Signal Repair Transportation - Traffic Division Signs & Signals Traffic Signal Repair INTERSECTION of Massachusetts Ave & Tremont St... Roxbury INTERSECTION Massachusetts Ave & Tremont St NaN 42.3393 -71.0804 2013-12-31 1020.0

41263 rows × 17 columns

In [18]:
sftt_df = pd.read_csv(stff)
sftt_df.drop(columns=['Unnamed: 0'])
Out[18]:
Point X Point Y City Postal Code Planting Site Id Tree Id Genus Species Common Name Diameter Tree: Amount of pruning seen in tree Tree: Other features found on tree (check all that apply) Tree: Percent of Tree that is Green Planting Site: Is there a stump? Planting Site: Material in site: Planting Site: Pit Length
0 -71.080342 42.331334 Boston 2119.0 3273653 NaN NaN NaN NaN NaN NaN NaN NaN No, the site is empty. (Click Save and you're ... Mulch 42.0
1 -71.079356 42.330610 Boston 2119.0 3273663 2910929.0 Gleditsia triacanthos Honeylocust 13.5 None to some ["Trunk wounds"] Adequate coverage: 50%-89% of crown covered by... There is a tree! If so, continue to next section. Plain dirt NaN
2 -71.080507 42.331242 Boston 2119.0 3273668 2910934.0 Fraxinus pennsylvanica Green ash 15.6 None to some ["Trunk wounds"] Vigorous foliage: 90-100% of crown covered by ... There is a tree! If so, continue to next section. Plain dirt 46.0
3 -71.084592 42.334658 Boston 2120.0 3292810 2928647.0 Tilia tomentosa Silver linden 16.1 None to some NaN Vigorous foliage: 90-100% of crown covered by ... There is a tree! If so, continue to next section. Mulch 84.0
4 -71.080625 42.331163 Boston 2118.0 3273674 2910939.0 Fraxinus pennsylvanica Green ash 12.9 None to some NaN Adequate coverage: 50%-89% of crown covered by... There is a tree! If so, continue to next section. Mulch 52.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
662 -71.080041 42.331683 Boston 2119.0 3273624 2910892.0 Fraxinus pennsylvanica Green ash 15.0 None to some NaN Adequate coverage: 50%-89% of crown covered by... There is a tree! If so, continue to next section. Plain dirt NaN
663 -71.079617 42.331819 Boston 2119.0 3273627 2910895.0 Pyrus calleryana Callery pear 17.7 None to some ["Trunk wounds"] Vigorous foliage: 90-100% of crown covered by ... There is a tree! If so, continue to next section. Plain dirt 60.0
664 -71.079729 42.331739 Boston 2119.0 3273635 2910903.0 Pyrus calleryana Callery pear 6.8 None to some ["Discoloring of leaves", "Sucker growth"] Adequate coverage: 50%-89% of crown covered by... There is a tree! If so, continue to next section. Mulch 43.0
665 -71.078583 42.331534 Boston 2119.0 3273645 2910912.0 Zelkova serrata Japanese zelkova 19.1 NaN NaN Vigorous foliage: 90-100% of crown covered by ... There is a tree! If so, continue to next section. Plain dirt NaN
666 -71.080239 42.331434 Boston 2119.0 3273646 2910913.0 Gleditsia triacanthos Honeylocust 22.0 None to some ["Trunk wounds"] Adequate coverage: 50%-89% of crown covered by... There is a tree! If so, continue to next section. Mulch 92.0

667 rows × 16 columns

In [19]:
# Function to create a grid around Mass Ave and diving it into sectors
def assign_grid_section(x, y, x_min, x_max, y_min, y_max):
    # calculate the width and height of each grid section
    x_step = (x_max - x_min) / 3
    y_step = (y_max - y_min) / 3

    # calculate the grid section for the x and y coordinates
    x_section = int((x - x_min) / x_step)
    y_section = int((y - y_min) / y_step)

    # Ensure that maximum values fall into the last section
    if x_section > 2: x_section = 2
    if y_section > 2: y_section = 2

    # create a 3x3 grid with different letter for each section
    grid = [['A', 'B', 'C'],
            ['D', 'E', 'F'],
            ['G', 'H', 'I']]

    # return the letter of the grid section for the given x and y coordinates
    return grid[y_section][x_section]
In [20]:
# Assigning Tree data into sectors
def grid_value(row):
    x = row['Point X']
    y = row['Point Y']
    
    y_max = 42.34
    y_min = 42.33
    x_max = -71.075
    x_min = -71.085

    sector = assign_grid_section(x, y, x_min, x_max, y_min, y_max)
    
    return sector

# Assigning Case data into sectors
def case_value(row):
    x = row['longitude']
    y = row['latitude']
    
    y_max = 42.34
    y_min = 42.33
    x_max = -71.075
    x_min = -71.085

    sector = assign_grid_section(x, y, x_min, x_max, y_min, y_max)
    
    return sector
In [21]:
# Applying the sector function on the tree data
sftt_df['sector'] = sftt_df.apply(grid_value, axis=1)
In [22]:
sftt_df
Out[22]:
Unnamed: 0 Point X Point Y City Postal Code Planting Site Id Tree Id Genus Species Common Name Diameter Tree: Amount of pruning seen in tree Tree: Other features found on tree (check all that apply) Tree: Percent of Tree that is Green Planting Site: Is there a stump? Planting Site: Material in site: Planting Site: Pit Length sector
0 20 -71.080342 42.331334 Boston 2119.0 3273653 NaN NaN NaN NaN NaN NaN NaN NaN No, the site is empty. (Click Save and you're ... Mulch 42.0 B
1 23 -71.079356 42.330610 Boston 2119.0 3273663 2910929.0 Gleditsia triacanthos Honeylocust 13.5 None to some ["Trunk wounds"] Adequate coverage: 50%-89% of crown covered by... There is a tree! If so, continue to next section. Plain dirt NaN B
2 25 -71.080507 42.331242 Boston 2119.0 3273668 2910934.0 Fraxinus pennsylvanica Green ash 15.6 None to some ["Trunk wounds"] Vigorous foliage: 90-100% of crown covered by ... There is a tree! If so, continue to next section. Plain dirt 46.0 B
3 27 -71.084592 42.334658 Boston 2120.0 3292810 2928647.0 Tilia tomentosa Silver linden 16.1 None to some NaN Vigorous foliage: 90-100% of crown covered by ... There is a tree! If so, continue to next section. Mulch 84.0 D
4 29 -71.080625 42.331163 Boston 2118.0 3273674 2910939.0 Fraxinus pennsylvanica Green ash 12.9 None to some NaN Adequate coverage: 50%-89% of crown covered by... There is a tree! If so, continue to next section. Mulch 52.0 B
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
662 5593 -71.080041 42.331683 Boston 2119.0 3273624 2910892.0 Fraxinus pennsylvanica Green ash 15.0 None to some NaN Adequate coverage: 50%-89% of crown covered by... There is a tree! If so, continue to next section. Plain dirt NaN B
663 5595 -71.079617 42.331819 Boston 2119.0 3273627 2910895.0 Pyrus calleryana Callery pear 17.7 None to some ["Trunk wounds"] Vigorous foliage: 90-100% of crown covered by ... There is a tree! If so, continue to next section. Plain dirt 60.0 B
664 5603 -71.079729 42.331739 Boston 2119.0 3273635 2910903.0 Pyrus calleryana Callery pear 6.8 None to some ["Discoloring of leaves", "Sucker growth"] Adequate coverage: 50%-89% of crown covered by... There is a tree! If so, continue to next section. Mulch 43.0 B
665 5609 -71.078583 42.331534 Boston 2119.0 3273645 2910912.0 Zelkova serrata Japanese zelkova 19.1 NaN NaN Vigorous foliage: 90-100% of crown covered by ... There is a tree! If so, continue to next section. Plain dirt NaN B
666 5610 -71.080239 42.331434 Boston 2119.0 3273646 2910913.0 Gleditsia triacanthos Honeylocust 22.0 None to some ["Trunk wounds"] Adequate coverage: 50%-89% of crown covered by... There is a tree! If so, continue to next section. Mulch 92.0 B

667 rows × 18 columns

In [23]:
sftt_df['sector'].value_counts()
Out[23]:
A    140
B    121
I     90
C     86
D     85
H     44
F     44
E     38
G     19
Name: sector, dtype: int64
In [24]:
# Applying the sector function in the case data
case_df['sector_cases'] = case_df.apply(case_value, axis=1)
/var/folders/pr/rx1rrffd36q4ys1d_2dbyssr0000gn/T/ipykernel_8017/3606675908.py:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  case_df['sector_cases'] = case_df.apply(case_value, axis=1)
In [25]:
case_df
Out[25]:
case_enquiry_id open_dt ontime case_status closure_reason case_title subject reason type location neighborhood location_street_name location_zipcode latitude longitude DateTime pres sector_cases
6 101004631390 2023-01-15 10:21:00 OVERDUE Open Street Light Outages Public Works Department Street Lights Street Light Outages 778 Tremont St Roxbury MA 02118 South End 778 Tremont St 2118.0 42.3393 -71.0799 2023-01-15 1014.7 H
40 101004616307 2023-01-02 07:41:13 ONTIME Closed Case Closed. Closed date : Mon Jan 02 12:45:11... CE Collection Public Works Department Street Cleaning CE Collection 100 W Concord St Roxbury MA 02118 South End 100 W Concord St 2118.0 42.3388 -71.0763 2023-01-02 1018.5 I
47 101004616375 2023-01-02 09:07:30 ONTIME Closed Case Closed. Closed date : Tue Jan 03 09:30:14... Requests for Street Cleaning Public Works Department Street Cleaning Requests for Street Cleaning 654 Massachusetts Ave Roxbury MA 02118 South End 654 Massachusetts Ave 2118.0 42.3363 -71.0763 2023-01-02 1018.5 F
53 101004616445 2023-01-02 09:59:26 ONTIME Closed Case Closed. Closed date : Tue Jan 03 06:52:22... Requests for Street Cleaning Public Works Department Street Cleaning Requests for Street Cleaning 1651 Washington St Roxbury MA 02118 South End 1651 Washington St 2118.0 42.3379 -71.0754 2023-01-02 1018.5 I
78 101004616179 2023-01-01 18:00:00 ONTIME Closed Case Closed. Closed date : Mon Jan 02 07:27:46... Needle Pickup Mayor's 24 Hour Hotline Needle Program Needle Pickup 694 Massachusetts Ave Roxbury MA 02118 South End 694 Massachusetts Ave 2118.0 42.3354 -71.0752 2023-01-01 1008.7 F
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2405358 101000993486 2013-12-31 07:42:01 ONTIME Closed Case Closed Duplicate of Existing Case 871411 New Tree Requests Parks & Recreation Department Trees New Tree Requests 608 Massachusetts Ave Roxbury MA 02118 South End 608 Massachusetts Ave 2118.0 42.3373 -71.0776 2013-12-31 1020.0 I
2405359 101000993487 2013-12-31 07:43:54 ONTIME Closed Case Closed Case Resolved no space for new tree New Tree Requests Parks & Recreation Department Trees New Tree Requests 616 Massachusetts Ave Roxbury MA 02118 South End 616 Massachusetts Ave 2118.0 42.3370 -71.0772 2013-12-31 1020.0 I
2405498 101000993676 2013-12-31 09:52:55 ONTIME Closed Case Closed Case Resolved bike not there upon ... Abandoned Bicycle Mayor's 24 Hour Hotline Abandoned Bicycle Abandoned Bicycle 97 W Springfield St Roxbury MA 02118 South End 97 W Springfield St 2118.0 42.3380 -71.0773 2013-12-31 1020.0 I
2405587 101000993830 2013-12-31 13:16:51 OVERDUE Open Graffiti Removal Property Management Graffiti Graffiti Removal INTERSECTION of Ruggles St & Shawmut Ave Roxb... Roxbury INTERSECTION Ruggles St & Shawmut Ave NaN 42.3320 -71.0840 2013-12-31 1020.0 A
2405658 101000993967 2013-12-31 18:07:49 ONTIME Closed Case Closed Case Resolved Traffic Signal Repair Transportation - Traffic Division Signs & Signals Traffic Signal Repair INTERSECTION of Massachusetts Ave & Tremont St... Roxbury INTERSECTION Massachusetts Ave & Tremont St NaN 42.3393 -71.0804 2013-12-31 1020.0 H

41263 rows × 18 columns

In [26]:
case_df['sector_cases'].value_counts()
Out[26]:
I    10164
H     9851
F     9311
G     2953
D     2799
A     2408
E     1789
B     1174
C      814
Name: sector_cases, dtype: int64
In [27]:
alt.data_transformers.disable_max_rows()
Out[27]:
DataTransformerRegistry.enable('default')
In [28]:
#merged_df
brush = alt.selection_interval()  # Define brush as a selection interval
sector_selection = alt.selection_multi(fields=['sector_cases'])
/opt/homebrew/lib/python3.10/site-packages/altair/utils/deprecation.py:65: AltairDeprecationWarning: 'selection_multi' is deprecated.  Use 'selection_point'
  warnings.warn(message, AltairDeprecationWarning, stacklevel=1)

Creating Interactive Charts¶

In [32]:
points = alt.Chart(case_df).mark_point(filled=True).encode(
    alt.X('DateTime:T', title='Years').scale(zero=False),
    alt.Y('pres:Q', title='Precipitation in mml').scale(domain=(980, 1050)),
    tooltip='pres:Q',
    color=alt.condition(brush, 'pres:Q', alt.value('lightgray'), legend=alt.Legend(title="Precipitation"))
).add_params(
    brush, 
    sector_selection
    
).properties(
    title='Precipitation Over Time (2013-2023)',
    width=600,
    height=300
)

bars = alt.Chart(case_df).mark_bar().encode(
    alt.X('count(sector_cases):Q', title='Number of Cases'),
    alt.Y('sector_cases:N',  title='Sectors'),
    tooltip='case_status:N',
    color=alt.Color('case_status:N',  legend=alt.Legend(title="Case Status")),
    order=alt.Order(
      # Sort the segments of the bars by this field
      'case_status:N',
      sort='ascending')
).transform_filter(
    brush
).properties(
    title='Count of Cases Per Sector',
    width=400,
    height=300
)

bars2 = alt.Chart(sftt_df).mark_bar().encode(
    alt.X('count(sector):Q', title='Number of Trees'),
    alt.Y('sector:N',  title='Sectors'),
     color=alt.Color('sector:N',  legend=alt.Legend(title="Sectors")),
    tooltip='mean(Diameter)'
).properties(
    title='Trees Per Sector',
    width=400,
    height=300
)


# Add a custom label to the points chart

chart = points & (bars | bars2)
In [33]:
chart
Out[33]:

Idea: Tree should be segmented by age/diameter

average absorbtion of these trees for each of these segments

Todo: segmentation data: Sectors need significance name them use diverging color map for sector count cases

In [34]:
chart.save('group4_interactive_chart.html')
In [ ]: